iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0
Google Developers Machine Learning

透視Google Machine Learning的奧秘系列 第 12

[Day12] Python程式如何做到資料前處理的各個步驟?

  • 分享至 

  • xImage
  •  

前一天介紹了維度表的應用以及有關商業智慧的部分,今天我們來看Python程式如何做到資料前處理的各個步驟。

資料前處理步驟:

1.觀看資料特徵,是數值型特徵還是類別型特徵
2.觀看資料的離群值/異常值,這些值是真的異常還是有特別的涵義?決定去除或保留
3.觀看資料的缺失值,思考用什麼方法進行補值
4.數值型特徵標準化,思考要使用MinMaxScaler還是StandarScaler
5.類別型特徵編碼,使用適當的編碼方式
6.處理完特徵後,進行標準化

檢查異常值(Outlier)方法

統計值:如平均數、標準差、中位數、分位數、z-score、IQR
畫圖:如直方圖、盒圖、次數累積分布等

填補缺失值

要填補缺失值,可以使用均值,中位數,眾數,也可以使用Imputer方法

import numpy as np
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])
x = [[np.nan, 2], [6, np.nan], [7, 6]]
imp.transform(x)
>>>array([[4.        , 2.        ],
       [6.        , 3.66666667],
       [7.        , 6.        ]])

類別特徵編碼

標籤編碼(Label Encoder):

  • 類似於流水號,依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼
  • 確實能轉成分數,但缺點是分數的大小順序沒有意義

獨熱編碼(One Hot Encoder):

  • 為了改良數字大小沒有意義的問題,將不同的類別分別獨立為一欄
  • 缺點是需要較大的記憶空間與計算時間,且類別數量越多時越嚴重
  • 類別型特徵建議預設採用標籤編碼,除非該特徵重要性高,且可能值較少(獨熱編碼時負擔較低) 時,才應考慮使用獨熱編碼
  • 獨熱編碼缺點是需要較大的記憶空間與計算時間,且類別數量越多時越嚴重

類別型特徵有標籤編碼 (Label Encoding) 與獨熱編碼(One Hot Encoding) 兩種基礎編碼方式中,標籤編碼比較常用,當特徵重要性高,且可能值較少時,才應該考慮獨熱編碼

均值編碼(Mean Encoding)

使用時機:類別特徵看起來來與目標值有顯著相關時,使用目標值的平均值,取代原本的類別型特徵

計數編碼(Counting)

如果類別的目標均價與類別筆數呈正相關(或負相關),也可以將筆數本身當成特徵例如 : 購物網站的消費金額預測

標準化

在sklearn.preprocessing中使用scale的方法,可以實現標準化
preprocessing提供了Normalizer方法,實用transform方法同樣也可以對新的數據進行同樣的轉換

normalizer = preprocessing.Normalizer().fit(x) #Normalizer(copy=True, norm='l2')
normalizer.transform(x)

StandardScaler與MinMaxScaler的差別

sklearn.preprocessing.StandardScaler函數
  • 可以保存訓練集中的參數(均值、方差)
  • 可在訓練資料集上做了標準轉換操作之後,把相同的轉換應用到測試資料集上
  • 如果之後有新的資料進來也可直接使用,不用重新把資料放在一起再計算一次
sklearn.preprocessing.MinMaxScaler函數
  • 將屬性縮放到一個指定的最大和最小值(通常是1-0)之間
  • 對於方差非常小的屬性可以增強其穩定性
  • 參數當中feature_range=(min, max)可以直接指定最大最小值

MinMax可用在特徵分佈均勻且沒有極端值的情況
Standard可用在特徵分佈為常態時

資料離散化

為什麼資料離散化?

  • 調高計算效率
  • 分類模型計算需要
  • 給予距離計算模型(k均值、協同過濾)中降低異常資料對模型的影響
  • 影象處理中的二值化處理

連續資料離散化方法

  • 分位數法:使用四分位、五分位、十分位等進行離散
  • 距離區間法:等距區間或自定義區間進行離散,有點是靈活,保持原有資料分佈
  • 頻率區間法:根據資料的頻率分佈進行排序,然後按照頻率進行離散,好處是資料變為均勻分佈,但是會更改原有的資料結構
  • 聚類法:使用k-means將樣本進行離散處理
  • 卡方:通過使用基於卡方的離散方法,找出資料的最佳臨近區間併合並,形成較大的區間
  • 二值化:資料跟閾值比較,大於閾值設定為某一固定值(例如1),小於設定為另一值(例如0),然後得到一個只擁有兩個值域的二值化資料集。

今天先介紹到這,明天我們來討論資料視覺化的技巧。

參考資料與圖片來源


上一篇
[Day11] 你了解你在做機器學習時的資料嗎?資料倉儲與商業智慧應用(6/6)
下一篇
[Day13] 認識資料視覺化
系列文
透視Google Machine Learning的奧秘30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言